﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using QuanLyKho.DataAccess;
using QuanLyKho.Common;
using QuanLyKho.GUI.Library;
using System.Threading;

namespace QuanLyKho.GUI
{
    public partial class frmAddAccount : Form
    {
        clsLibrary clsMD5 = new clsLibrary();
        private static long ID = 0, MaxID = 0;
        public frmAddAccount()
        {
            InitializeComponent();
            txtUserName.Focus();
            ID = 0;
            MaxID = 0;
        }

        public frmAddAccount(long _ID)
        {
            InitializeComponent();
            txtUserName.Focus();
            ID = _ID;
            MaxID = 0;
            binDataOneSysAccount(ID);
        }

        private void binDataOneSysAccount(long _ID)
        {
            List<clsUser> listUser = new clsDataAccessUser().UserSelectOneWithId(_ID);
            if (listUser.Count > 0)
            {
                txtUserName.Text = listUser[0].UserName;
                txtPassword.Text = clsMD5.DeCrypt(listUser[0].Password, "Havitel");
                txtPasswordAgain.Text = clsMD5.DeCrypt(listUser[0].Password, "Havitel");

                txtFullname.Text = listUser[0].Fullname;
                txtPosition.Text = listUser[0].Position;
                txtDes.Text = listUser[0].Des;

                cbIsAdmin.Checked = listUser[0].Admin;
                cbUpdate.Checked = listUser[0].Update;
                cbRead.Checked = listUser[0].Read;
            }
        }

        private void resetControl()
        {
            txtUserName.Text = string.Empty;
            txtPassword.Text = string.Empty;
            txtFullname.Text = string.Empty;
            txtPasswordAgain.Text = string.Empty;
            txtPosition.Text = string.Empty;
            txtDes.Text = string.Empty;

            cbIsAdmin.Checked = false;
            cbUpdate.Checked = false;
            cbRead.Checked = false;
        }

        private void btnDongY_Click(object sender, EventArgs e)
        {
            string UserName = txtUserName.Text;
            string Password = txtPassword.Text;
            string PasswordAgain = txtPasswordAgain.Text;
            string Fullname = txtFullname.Text;
            string Position = txtPosition.Text;
            string Des = txtDes.Text;

            bool Admin = cbIsAdmin.Checked;
            bool Update = cbUpdate.Checked;
            bool Read = cbRead.Checked;

            DateTime Created = DateTime.Now;
            if (Fullname.Length < 1)
            {
                new clsLibrary().runLoading("Họ tên không được trống.", 0);
                txtFullname.Focus();
                return;
            }
            else
            {
                if (Fullname.Length > 255)
                {
                    new clsLibrary().runLoading("Họ tên không lớn hơn 255 ký tự.", 0);
                    txtFullname.Focus();
                    return;
                }
            }

            if (Position.Length < 1)
            {
                new clsLibrary().runLoading("Chức vụ không được trống.", 0);
                txtPosition.Focus();
                return;
            }
            else
            {
                if (Position.Length > 255)
                {
                    new clsLibrary().runLoading("Chức vụ không lớn hơn 255 ký tự.", 0);
                    txtPosition.Focus();
                    return;
                }
            }

            if (UserName.Length < 1)
            {
                new clsLibrary().runLoading("Tên tài khoản không được trống.", 0);
                txtUserName.Focus();
                return;
            }
            else
            {
                if (UserName.Length > 50)
                {
                    new clsLibrary().runLoading("Tên tài khoản không lớn hơn 50 ký tự.", 0);
                    txtUserName.Focus();
                    return;
                }
            }

            if (Password.Length < 1)
            {
                new clsLibrary().runLoading("Mật khẩu không được trống.", 0);
                txtPassword.Focus();
                return;
            }
            else
            {
                if (Password.Length > 50)
                {
                    new clsLibrary().runLoading("Mật khẩu không lớn hơn 50 ký tự.", 0);
                    txtPassword.Focus();
                    return;
                }

                if (!Password.Equals(PasswordAgain))
                {
                    new clsLibrary().runLoading("Mật khẩu nhập lại không đúng.", 0);
                    txtPasswordAgain.Focus();
                    return;
                }
            }

            clsUser obj = new clsUser();
            obj.UserName = UserName;
            obj.Password = clsMD5.EnCrypt(PasswordAgain, "Havitel");
            obj.Fullname = Fullname;
            obj.Admin = Admin;
            obj.Update = Update;
            obj.Read = Read;
            obj.Des = Des;
            obj.Created = Created;
            obj.Position = Position;
            if (ID < 1)
            {
                if (new clsDataAccessUser().AddNew(obj) > 0)
                {
                    new clsLibrary().runLoading("Đã thêm mới tài khoản: " + UserName + ".", 2);
                    resetControl();
                }
                else
                    new clsLibrary().runLoading("Có lỗi xảy ra khi thêm mới.", 0);
            }
            else
            {
                obj.ID = ID;
                if (new clsDataAccessUser().Update(obj) > 0)
                {
                    new clsLibrary().runLoading("Đã sửa tài khoản: '" + UserName + "'.", 2);
                    this.Close();
                }
                else
                    new clsLibrary().runLoading("Có lỗi xảy ra khi sửa tài khoản.", 0);
            }

        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
